Gas Station

There are N gas stations along a circular route, where the amount of gas at station i is gas[i].

You have a car with an unlimited gas tank and it costs cost[i] of gas to travel from station i to its next station (i+1). You begin the journey with an empty tank at one of the gas stations.

Return the starting gas station’s index if you can travel around the circuit once, otherwise return -1.

Note:

The solution is guaranteed to be unique.

Solution:

  1. public class Solution {
  2. public int canCompleteCircuit(int[] gas, int[] cost) {
  3. int pos = -1;
  4. int curr = 0, total = 0;
  5. for (int i = 0; i < gas.length; i++) {
  6. int diff = gas[i] - cost[i];
  7. curr += diff;
  8. total += diff;
  9. if (curr < 0) {
  10. curr = 0;
  11. pos = i;
  12. }
  13. }
  14. if (total >= 0) {
  15. return pos + 1;
  16. }
  17. return -1;
  18. }
  19. }